package Thread;


import org.junit.Test;

import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.function.Consumer;


public class LambdaDemo {
    /**
     * Lambda表达式（）->{}   【接口/抽象--匿名内部类】
     *                       【集合遍历--匿名内部类】
     *Collection--->List：存重复元素并且有序【保存数据结构一致】
     *               Set：存无序并且不重复【保存数据结构一致】
     *               Queue：队列结合业务
     *
     *
     *
     *
     * Map--------->HashMap：键值对存储
     */
@Test
    public  void  testList(){


    //List集合:保存元素
    List<String> list=new ArrayList<>();
    list.add("喜喜");list.add("哈哈");list.add("呵呵");
    //集中遍历方式  增强for  普通for   forEach方法
    for (String f:list){
        System.out.println(f);
    }
    //支持forEach方法   遍历集合元素
    //Consumer针对List集合接口针对List集合提供接口：功能获取List集合元素
    //accept() 获取list集合的所有元素
    list.forEach(new Consumer<String>(){
        public void accept(String s) {
            System.out.println("consumer接口遍历方案:"+s);
        }
    });
    //支持forEach方法：遍历结合元素【Consumer 匿名内部类】
    //编写Lambda表达式写法
    list.forEach(s->System.out.println("Lambda接口遍历方案:"+s));
    /**
     * 使用Lambda完成Thread线程创建
     * 使用Lambda完成Runnable线程创建
     *
     *
     */
    }
    @Test
    public  void  LambdaHomeWork1(){
    Thread c=new Thread(()->{for (int i=1;i<2;i++){
        System.out.println("喜喜");
    }});
    }

    @Test
    public  void LambdaHomeWork2() {
    //1.创建Runnable接口---run()
        Runnable mr1 = () -> {
            for (int i = 0; i > 10; i++)
                System.out.println();
        };
        //2.创建Thread线程类---start
        Thread t2=new Thread(mr1);
        //启动线程
        t2.start();
    }
    @Test
    public  void LambdaHomeWork3(){
        File f=new File("./");
        FileFilter F=(c1)->{return c1.getName().startsWith("s");};
        File[] files=f.listFiles(F);
        for (int i=1;i< files.length;i++){
            System.out.println("打印所有文件和文件夹的名字："+files[i].getName());
        }

    }
    @Test
    public  void  LambdaHomeWork4(){
    for (File f:new File("./").listFiles((c1)->{return c1.getName().startsWith("s");}));{
            System.out.println("遍历过滤");
        }
    }
    @Test
    public  void  LambdaHomeWork5(){
    List<String> l=new ArrayList<>();
        l.add("喜喜喜");l.add("哈哈");l.add("呵");
        Comparator<String> c=(a1,a2)->a2.length()-a1.length();
        Collections.sort(l,c);
        System.out.println("排序集合"+l);










    }








}




















